package com.starhub.application.rag.service;

import java.util.List;

import com.starhub.application.rag.dto.MetaRagDto;
import com.starhub.application.rag.dto.RetrieveDto;
import com.starhub.application.rag.result.RagResult;

import dev.langchain4j.data.segment.TextSegment;

public interface RagService {

    /**
     * 构建常规检索条件
     * @param metaRagDto
     * @return
     */
    public RetrieveDto checkRetrieveDto(RetrieveDto retrieveDto);

    /**
     * 根据内容检索知识条目
     * @param retrieveDto 检索条件
     * @return 检索结果
     */
    public RagResult retrieve(RetrieveDto retrieveDto);

    /**
     * 根据条件检索知识条目
     * @param retrieveDto 检索条件
     * @return 检索结果
     */
    public RagResult retrieveByCondition(RetrieveDto retrieveDto);

    /**
     * 构建元数据检索条件
     * @param metaRagDto
     * @return
     */
    public MetaRagDto checkMetaRagDto(MetaRagDto metaRagDto);

    /**
     * 根据元数据检索知识条目
     * @param metaRagDto 检索条件
     * @return 检索结果
     */
    public List<TextSegment> retrieveByMetaData(MetaRagDto metaRagDto);
}
